/*
 * Copyright (c) 2022-2022 All rights Reserved.
 */

package com.driving.core.base;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.driving.core.util.Response;

/**
 * 包含主体（人）的操作
 *
 * @param <DTO> 主体（人）
 * @author SAGITTAR
 * @since 2017
 */
public interface IPersonController<DTO extends AbstractDTO> {

    /**
     * 密码修改，在登录状态下给出旧密码和新密码
     *
     * <pre>
     * {
     *     "oldPassword": "123456",
     *     "password": "654321"
     * }
     * </pre>
     *
     * @param request request
     * @param dto dto
     * @return 密码修改，在登录状态下给出旧密码和新密码
     */
    Response<Boolean> passwordUpdate(HttpServletRequest request, DTO dto);

    /**
     * 密码重置，给出手机号和新密码
     *
     * <pre>
     * {
     *     "mobile": "13012345678",
     *     "password": "123456"
     * }
     * </pre>
     *
     * @param dto dto
     * @return 密码重置，给出手机号和新密码
     */
    Response<Boolean> passwordReset(DTO dto);

    /**
     * 登录
     *
     * @param dto dto
     * @return 登录
     */
    Response<Map<String, String>> login(DTO dto);
}
